package com.sky.service;

import com.sky.dto.AuditMerchantDTO;
import com.sky.dto.MerchantPageQueryDTO;
import com.sky.entity.MerchantCategory;
import com.sky.vo.MerchantStatusCount;
import com.sky.vo.MerchantVO;
import com.sky.vo.PageResult;
import java.util.List;

/**
 * 商家管理服务接口（后台管理功能）
 */
public interface AdminMerchantService {
    
    /**
     * 获取待审核商家列表
     * @param merchantPageQueryDTO 分页查询条件
     * @return 分页结果
     */
    PageResult<MerchantVO> getPendingMerchants(MerchantPageQueryDTO merchantPageQueryDTO);
    
    /**
     * 审核商家（通过/拒绝）
     * @param action 操作类型（approve/reject）
     * @param auditMerchantDTO 审核信息
     */
    void auditMerchant(String action, AuditMerchantDTO auditMerchantDTO);
    
    /**
     * 获取所有商家列表
     * @param merchantPageQueryDTO 分页查询条件
     * @return 分页结果
     */
    PageResult<MerchantVO> getAllMerchants(MerchantPageQueryDTO merchantPageQueryDTO);
    
    /**
     * 切换商家状态（启用/禁用）
     * @param id 商家ID
     * @param status 状态（true-启用，false-禁用）
     */
    void changeStatus(Long id, Boolean status);
    
    /**
     * 重新审核商家
     * @param id 商家ID
     */
    void reauditMerchant(Long id);
    
    /**
     * 获取商家状态统计
     * @return 包含各状态商家数量的对象
     */
    MerchantStatusCount getMerchantStatusCount();
    
    /**
     * 获取商家详情
     * @param id 商家ID
     * @return 商家详情
     */
    MerchantVO getMerchantDetail(Long id);
    
    /**
     * 更新商家营业状态
     * @param id 商家ID
     * @param businessStatus 营业状态（营业/休息）
     */
    void updateBusinessStatus(Long id, String businessStatus);
    
    /**
     * 查询所有商家分类
     * @return 分类列表
     */
    List<MerchantCategory> getAllMerchantCategories();
    
    /**
     * 根据ID查询商家分类
     * @param id 分类ID
     * @return 分类信息
     */
    MerchantCategory getMerchantCategoryById(Long id);
}